#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QGraphicsPixmapItem>//图形元素
#include<QGraphicsView>//视图
#include<QGraphicsScene>//场景
#include<QList>//链表
#include"enemy.h"
#include"zenemy.h"
#include"benemy.h"
#include"myplane.h"
#include<QMediaPlayer>//媒体播放器
#include<QLabel>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

    // 背景移动函数
    void BGMove();

    //赛车的移动
    void PlaneMove();

    //按键事件
    void keyPressEvent(QKeyEvent*event);
    void keyReleaseEvent(QKeyEvent*event);

    //黄车生成
    void CreateEnemy();

    //氮气瓶生成
    void CreateZenemy();

    void CreateBenemy();



    //碰撞检测
    void Collision();
    void Zollision();
    void Bollision();

private:
    Ui::Widget *ui;

    QGraphicsView mGameView;//游戏视图
    QGraphicsScene mScene;//场景
    QGraphicsScene mStartScene;//开始游戏场景
    QGraphicsView mGameoverView;//游戏结束视图
    QGraphicsScene mOverScene;//结束游戏场景

    QGraphicsPixmapItem mBackGround1;//背景元素
    QGraphicsPixmapItem mBackGround2;
    MyPlane *mPlane=new MyPlane;

    //定时器
    QTimer*mBGMoveTimer;//背景移动
    QTimer*mPlaneMoveTimer;//赛车移动
    QTimer*mEnemyCreateTimer;//黄车创建定时器
    QTimer*mEnemyMoveTimer;//黄车移动定时器
    QTimer*mZenemyCreateTimer;//氮气瓶创建定时器
    QTimer*mZenemyMoveTimer;//氮气瓶移动定时器
    QTimer*mBenemyCreateTimer;//卡车创建定时器
    QTimer*mBenemyMoveTimer;//卡车移动定时器


    QList<int> mKeyList;//按键组合
    QList<Enemy*>mEnemyList;//黄车容器
    QList<Zenemy*>mZenemyList;//氮气瓶容器
    QList<Benemy*>mBenemyList;//卡车容器

    //背景音乐
     QMediaPlayer mMediaBG;
     int mMoveSpeed=2;
     //分数标签
     int score=0;
     QLabel* scorelabel=new QLabel;



};

#endif // WIDGET_H
